#include "head.h"

/**
 * 参数：所有用户的信息
 * 返回值：登录成功后返回用户信息
 */
U_data Log_in(U_list *list)
{
    if (list == NULL)
    {
        printf("S_List_log_in : list = NULL\n");
        exit(-1);
    }
    if (list->next == NULL)
    {
        printf("S_List_log_in : list->next = NULL\n");
        exit(-1);
    }

    U_data data;

    // 开始登录
    while (1)
    {
        system("clear");
        printf("请输入账号: ");
        scanf("%s", data.name);

        printf("请输入密码: ");
        scanf("%s", data.passwd);

        U_node *ptr = list->next;

        while (ptr != NULL)
        {
            // 比较用户名
            if (strcmp(data.name, ptr->data.name) == 0)
            {
                // 比较密码
                if (strcmp(data.passwd, ptr->data.passwd) == 0)
                {
                    return ptr->data; // 登录成功，返回用户信息
                }
            }
            ptr = ptr->next;
        }
        printf("用户名或密码错误，请重新输入。\n");
    }
}

// 注册
void Sign_in(FlightSystem Flight_sys)
{
    U_data data;
    char num1[20],num2[20];
    system("clear");
    while (1)
    {
        printf("请设置您的姓名:");
        scanf("%s",data.name);
        U_list *list = S_List_init();
        list = S_List_merge(list, Flight_sys.ADMIN_USER);    // 管理员账户信息文件
        list = S_List_merge(list, Flight_sys.REGULAR_USER);  // 普通用户信息文件
        list = S_List_merge(list, Flight_sys.SILVER_USER);   // 银卡会员信息文件 (9折)
        list = S_List_merge(list, Flight_sys.GOLD_USER);     // 金卡会员信息文件 (8折)
        list = S_List_merge(list, Flight_sys.PLATINUM_USER); // 白金会员信息文件 (7折)
        if (S_List_find_name(list,data.name) != NULL)
        {
            printf("用户名已存在\n");
            continue;
        }
        while (1)
        {
            printf("请设置密码:");
            scanf("%s",num1);
            printf("请重新输入密码:");
            scanf("%s",num2);
            if (strcmp(num1,num2) != 0)
            {
                printf("两次密码不一致，请重新输入");
                continue;
            }
            break;
        }
        strcpy(data.passwd,num1);
        system("clear");
        printf("请核对您的信息");
        printf("name=%s\n",data.name);
        printf("passwad=%s\n",data.passwd);
        data.grade = 2;
        data.value = 0;
        data.rate = 0;
        S_List_insert(Flight_sys.REGULAR_USER,data,1);
        S_List_File_print(Flight_sys.REGULAR_USER,REGULAR_FILE);
        return;
    }
    
}